<?php

require_once("../../util/util.php");
require_once("../../util/conexao.php");
require_once("regras/negocio/cancelarVendaNegocio.php");

$objNegocio = new CancelarVendaNegocio();

if ($acao == "CANCELAR-VENDA-PESQUISAR") {
    $conexao = Conexao::conectar();

    if ($_POST) {
        $arrayDados = array();
        $arrayDados["placa"] = $_POST["txtPlaca"];

        try {

            if (empty($arrayDados["placa"]))
                throw new Exception("PDSP");

            $arrayDados["idVeiculo"] = $objNegocio->retornaIdVeiculo($conexao, $arrayDados);
            if ($arrayDados["idVeiculo"] == 0)
                throw new Exception("VNE");

            $movimento = $objNegocio->recuperarMovimentoVeiculo($conexao, $arrayDados);
            if (count($movimento) == 0)
                throw new Exception("NETM");

            if (isset($movimento[0]["id"]) && is_numeric($movimento[0]["id"]))
                $titulosMovimento = $objNegocio->recuperarTitulosVeiculo($conexao, $movimento[0]["id"]);

            $dadosComprador = $objNegocio->retornaDadosComprador($conexao, $movimento[0]["idCliente"]);
            $dadosVeiculo = $objNegocio->retornaDadosVeiculo($conexao, $movimento[0]["idVeiculo"]);

            $movimentoC = $objNegocio->recuperarMovimentoVeiculoCorretagem($conexao, $arrayDados);

            if (isset($movimentoC[0]["id"]) && is_numeric($movimentoC[0]["id"]))
                $titulosCorretagem = $objNegocio->recuperarTitulosVeiculo($conexao, $movimentoC[0]["id"]);
        } catch (Exception $ex) {

            switch ($ex->getMessage()) {
                case 'PDSP':
                    $class = "erro";
                    $mensagem = "Digite a placa do veículo.";
                    break;
                case 'VNE':
                    $class = "erro";
                    $mensagem = "Veículo não encontrado.";
                    break;
                case 'NETM':
                    $class = "erro";
                    $mensagem = "Não foi encontrado movimento para esse veículo.";
                    break;
            }
        }
    }

    if (isset($_GET["msg"]) && $_GET["msg"] == 1) {

        $class = "sucesso";
        $mensagem = "Venda cancelada com sucesso.";
    } elseif (isset($_GET["msg"]) && $_GET["msg"] == 2) {

        $class = "erro";

        switch ($_GET["error"]) {

            case 'FTCM':
                $class = "erro";
                $mensagem = "Falha ao tentar excluir movimento.";
                break;
            case 'FTCT':
                $class = "erro";
                $mensagem = "Falha ao tentar excluir título.";
                break;
            case 'FTCM-C':
                $class = "erro";
                $mensagem = "Falha ao tentar excluir movimento corretagem.";
                break;
            case 'FTCT-C':
                $class = "erro";
                $mensagem = "Falha ao tentar excluir título corretagem.";
                break;
        }
    }
} elseif ($acao == "CANCELAR-VENDA") {

    $arrayDados = array();
    $arrayDados["idVeiculo"] = $_POST["hdcodigoVeiculo"];

    try {

        $conexao = Conexao::conectar();
        Util::begin();

        $movimento = $objNegocio->recuperarMovimentoVeiculo($conexao, $arrayDados);

        if ($movimento[0]["id"] > 0) {
            if (!$objNegocio->cancelarVendaMovimento($conexao, $movimento[0]["id"]))
                throw new Exception("FTCM");
            if (!$objNegocio->cancelarTitulosMovimento($conexao, $movimento[0]["id"]))
                throw new Exception("FTCT");
        }

        $movimento = $objNegocio->recuperarMovimentoVeiculoCorretagem($conexao, $arrayDados);

        if ($movimento[0]["id"] > 0) {
            if (!$objNegocio->cancelarVendaMovimento($conexao, $movimento[0]["id"]))
                throw new Exception("FTCM-C");
            if (!$objNegocio->cancelarTitulosMovimento($conexao, $movimento[0]["id"]))
                throw new Exception("FTCT-C");
        }

        $objNegocio->inserirCarroEstoque($conexao, $arrayDados);

        Util::commit();
        Conexao::desconectar();

        header("location:cancelar-venda.php?msg=1");
    } catch (Exception $ex) {

        Util::rollback();
        header("location:cancelar-venda.php?msg=2&error=" . $ex->getMessage());
    }
}
?>